const baseUrl = 'https://pcapi-xiaotuxian-front.itheima.net'
import { useUserStore } from '@/stores/index'
const userStore = useUserStore()
const httpInterceptor = {
  invoke(args) {
    // request 触发前拼接 url
    args.url = baseUrl + args.url
    //设置请求时间
    args.timeout = 4000 // 设置请求超时时间
    args.header = {
      ...args.header,
      'source-client': 'miniapp',
    }
    if (userStore.token) args.header.Authorization = userStore.token // 设置请求头，如果用户已经登录，则添加token到请求头中。
    uni.showLoading({ title: '加载中' })
  },
  success(args) {
    const res = args // 请求成功后，获取返回值，并修改code值。
    res.code = 1
    if (res.statusCode > 200 || res.statusCode < 300) {
      return res
    }
    // 401未登录错误处理，清除用户信息，跳转到登录页面。
    else if (res.statusCode === 401) {
      userStore.clearToken() // 清除用户信息，退出登录。
      uni.showToast({ title: '用户未登录，请先登录', icon: 'none' })
      uni.navigateTo({ url: '/pages/login/login' }) // 跳转到登录页面，提示用户登录。
    }
    //其他错误处理，比如404，500等错误。
    else {
      uni.showToast({ title: res.msg || '请求错误', icon: 'none' })
    }
  },
  fail(err) {
    console.log('interceptor-fail', err)
    uni.showToast({
      title: '网络错误，请检查您的网络后再重新试一下吧！',
      icon: 'none',
      duration: 2000,
    })
  },
  // 请求完成后关闭loding效果
  complete() {
    uni.hideLoading()
  },
}
uni.addInterceptor('request', httpInterceptor)
uni.addInterceptor('uploadFile', httpInterceptor)
